<?php
/**
 * Representa uma entidade no sistema que contem todos os dados financeiros do Cliente
 */
class Financeiro implements IObject {

    public $tMysqli;
    private $IDFinanceiro;
    private $EnTipoPagamento;
    private $EnPeriodicidade;
    private $ItDesconto;
    private $Plano;

    public function __construct($ArFinancialData, $tMysqli) {
        $this->tMysqli = $tMysqli;
        $this->IDFinanceiro = $ArFinancialData['IDFinanceiro'];
        $this->EnPeriodicidade = $ArFinancialData['EnPeriodicidade'];
        $this->EnTipoPagamento = $ArFinancialData['EnTipoPagamento'];
        $this->ItDesconto = $ArFinancialData['ItDesconto'];
        $this->loadPlan();
        $this->loadReleases();
    }
    /**
     * @method  loadPlan
     *
     * Carrega os Dados do Plano escolhido pelo cliente
     *
     * @author  Richard Brandao
     * @since   Junho de 2012
     */
    public function loadPlan() {
        $StSql = TQuery::getSqlFindPlanByFinancialId($this->IDFinanceiro);
        $this->tMysqli->exec($StSql);
        $ArPlano = $this->tMysqli->fetchAll();
        $this->Plano = new Plano($ArPlano[0], $this->tMysqli);
    }

    public function loadReleases() {
//        $StSql = TQuery::getSqlFindLancamentosByFinancialId($this->IDFinanceiro);
//        $tQuery = $this->tMysqli->exec($StSql);
//        while($ArLancamentos = mysqli_fetch_assoc($tQuery)) {
//
//        }
    }
    /**
     * @method  getMonthlyPayment
     *
     * Calcula o valor do plano considerando o desconto do plano e o desconto individual do cliente
     *
     * @since   Abril de 2012
     * @return  Float
     * @author  Richard Brandao <richardsbrandao@gmail.com>
     */
    public function getMonthlyPayment() {
        return $this->Plano->getPrice() - MathUtils::percentage($this->Plano->getPrice(), $this->ItDesconto, 2);
    }
    
    public function isCreditCard(){
        return $this->EnTipoPagamento == 'CARTAO'; 
    }
    
    public function isBillet(){
        return $this->EnTipoPagamento == 'BOLETO'; 
    }
    public function isYearly(){
        return $this->EnPeriodicidade == 'ANUAL';
    }
    
    public function isMonthly(){
        return $this->EnPeriodicidade == 'MENSAL';
    }

    public function payWith($EnTipoPagamento) {
        return $this->EnTipoPagamento == $EnTipoPagamento;
    }

    public function periodPaymentIs($EnPeriodicidade) {
        return $this->EnPeriodicidade == $EnPeriodicidade;
    }

    public function getIDFinanceiro() {
        return $this->IDFinanceiro;
    }

    public function setIDFinanceiro($IDFinanceiro) {
        $this->IDFinanceiro = $IDFinanceiro;
    }

    public function getEnTipoPagamento() {
        return $this->EnTipoPagamento;
    }

    public function setEnTipoPagamento($EnTipoPagamento) {
        $this->EnTipoPagamento = $EnTipoPagamento;
    }

    public function getEnPeriodicidade() {
        return $this->EnPeriodicidade;
    }

    public function setEnPeriodicidade($EnPeriodicidade) {
        $this->EnPeriodicidade = $EnPeriodicidade;
    }

    public function getItDesconto() {
        return $this->ItDesconto;
    }

    public function setItDesconto($ItDesconto) {
        $this->ItDesconto = $ItDesconto;
    }

    public function getPlano() {
        return $this->Plano;
    }

    public function setPlano($Plano) {
        $this->Plano = $Plano;
    }

    public function equals(IObject $Object) {

    }

}

?>
